// -*- C++ -*------------------------------------------------------------------
//  $Id: SideChainConstructor.h,v 1.2 2007-10-26 14:55:19 biocomp Exp $
//
//  Class:              SideChainConstructor
//
//  Base Class(es):     -
//
//  Derived Class(es):  -
//
//  Containing:         -
//
//  Author:             Silvio Tosatto
//
//  Project Name:       Victor
//
//  Date:               11/99
//
//  Reviewed By:        <Name>
//
//  Description:
//    
//
// ---------------------------------------------------------------------------

#ifndef _SIDECHAIN_CONSTRUCTOR_H_
#define _SIDECHAIN_CONSTRUCTOR_H_

// Includes:
#include <Spacer.h>
#include <SideChain.h>
#include <string>
#include <vector>

// Global constants, typedefs, etc. (to avoid):

namespace Biopool {

class SideChainConstructor
{
public: 

// CONSTRUCTORS/DESTRUCTOR:
  SideChainConstructor(istream& _refInput = cin) :
    refInput(_refInput), loaded(false), refSpacer() { }
  virtual ~SideChainConstructor() { PRINT_NAME; }  

// MODIFIERS:
  virtual SideChain& makeSideChain(string code); 

protected:
  // HELPERS:
  virtual void loadReference();

private:
  istream& refInput;             // reference stream
  int loaded;                    // is reference loaded yet?
  Spacer refSpacer;  // reference types
};

} // namespace
#endif //_SIDECHAIN_CONSTRUCTOR_H_
